move __save_flags from <random> to <ios> in preparation for reuse; no functionality change git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@185968 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/ios b/include/ios index 25bbfc0..c10003d 100644 --- a/include/ios +++ b/include/ios
@@ -983,6 +983,33 @@ return __str; } +template <class _CharT, class _Traits> +class __save_flags +{ + typedef basic_ios<_CharT, _Traits> __stream_type; + typedef typename __stream_type::fmtflags fmtflags; + + __stream_type& __stream_; + fmtflags __fmtflags_; + _CharT __fill_; + + __save_flags(const __save_flags&); + __save_flags& operator=(const __save_flags&); +public: + _LIBCPP_INLINE_VISIBILITY + explicit __save_flags(__stream_type& __stream) + : __stream_(__stream), + __fmtflags_(__stream.flags()), + __fill_(__stream.fill()) + {} + _LIBCPP_INLINE_VISIBILITY + ~__save_flags() + { + __stream_.flags(__fmtflags_); + __stream_.fill(__fill_); + } +}; + _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_IOS